home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / assembler / progasm1.lha / SORGENTI / LEZIONE2c.S < prev    next >
Text File  |  1995-04-19  |  3KB  |  88 lines

  1.  
  2. ; Lezione2c.s
  3.  
  4. Inizio:
  5.     LEA    CANE,a0
  6.     MOVE.L    #CANE,a1
  7.     MOVE.L    CANE,a2
  8.     move.l    a0,GATTO1
  9.     move.l    a1,GATTO2
  10.     move.l    a2,GATTO3
  11.     rts
  12.  
  13. CANE:
  14.     dc.l    $12345678
  15.  
  16. GATTO1:
  17.     dc.l    0
  18.  
  19. GATTO2:
  20.     dc.l    0
  21.  
  22. GATTO3:
  23.     dc.l    0
  24.  
  25.     END
  26.  
  27. Assemblate, fate un D Inizio per controllare a che indirizzo sono allocate
  28. le label, dopodiche' eseguite con J. Verificherete gia' che dopo il J la
  29. lista dei registri riporta dei numeri in negativo, e precisamente:
  30.  
  31. D0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  32. A0: NUMERO   NUMERO   12345678 00000000 00000000 00000000 00000000 NUMERO (SP)
  33. SSP= ..... USP= SR.....
  34.  
  35. Ogni volta che si e' eseguito un listato vengono visualizzati tutti i
  36. registri: la prima fila e' quella dei D0,D1,D2,D3,D4,D5,D6,D7, la seconda
  37. fila e' quella a0,a1,a2,a3,a4,a5,a6,a7.
  38. Sotto ci sono altri registri di cui parleremo piu' aventi. Il numero in A7
  39. e' lo SP attuale, non interessa in questo momento. Controllate invece i
  40. numeri presenti in A0,A1 ed A2: il primi sono 2 numeri uguali, in questo caso
  41. l'indirizzo di CANE:, infatti le due istruzioni:
  42.  
  43.     LEA    CANE,a0        ; piu' veloce di MOVE.L #CANE,A1! fate cosi'!
  44.     MOVE.L    #CANE,a1
  45.  
  46. Fanno la stessa cosa, cioe' copiare l'indirizzo della label in un registro.
  47. In A3 invece si legge 12345678, ovvero il contenuto della longword CANE:
  48. infatti l'istruzione MOVE.L CANE,a2 mette il contenuto della long CANE in a2.
  49. Come ulteriori verifiche, controllate dopo il J con un M CANE, e constaterete
  50. che CANE e' alla stessa locazione che appare in a0 e a1; dopodiche' potete
  51. anche controllare con M GATTO1 e M GATTO2 che queste 2 longword contengono
  52. l'indirizzo di gatto, infatti ci viene copiato con queste 2 istruzioni:
  53.  
  54.     move.l    a0,GATTO1
  55.     move.l    a1,GATTO2
  56.  
  57. Infine con M GATTO3 si verifichera' che contiene il contenuto della long
  58. GATTO, ossia $12345678.
  59. Per fare questi 3 controlli in un colpo solo potete fate un m gatto1 e
  60. premere il tasto return (o invio o "A CAPO!") varie volte: otterrete nei
  61. primi 4 bytes l'indirizzo di CANE, nei 4 bytes seguenti lo stesso indirizzo,
  62. nei 4 bytes seguenti il contenuto .L di cane, ossia $12345678. Continuando si
  63. vedranno numeri che non c'entrano nulla, infatti state vedendo una parte
  64. di memoria vuota od occupata da chissa' che cosa.
  65. Se volete fare qualche modifica, potete aggiungere per esempio prima dell'RTS
  66. queste linee:
  67.  
  68.     MOVE.L    A0,D0
  69.     MOVE.L    A1,D1
  70.     MOVE.L    A2,D2
  71.  
  72. Ed otterrete nella lista dei registri dopo il J un cambiamento anche dei
  73. primi 3 registri DATI.
  74. NOTA1: Come avete visto usare il LEA e' meglio di fare un MOVE.L #lab,a0, ma
  75. fate attenzione! il comando lea puo' essere usato solo per mettere un
  76. valore nei registri indirizzo! non si puo' fare ad esempio LEA LABEL,d0!!!!
  77. per mettere l'indirizzo di una label in un registro dati o in un altra long
  78. della memoria si deve usare il MOVE.L #LABEL,destinazione!!!!
  79. NOTA2: Di solito nei registri a0,a1,a2... si mettono indirizzi e nei
  80. registri d0,d1,d2,d3... si mettono dati vari, ma spesso si mettono indirizzi
  81. nei registri dati (d0,d1...) o dati nei registri indirizzi (a0,a1,a2..), a
  82. seconda della situazione. Insomma per darvi un idea del loro utilizzo,
  83. vengono usati come un foglio degli appunti in cui tenete un certo numero
  84. di numeri di telefono o dove riportate quanto avete speso per comprare il
  85. gelato, quindi come utili E VELOCI longword a disposizione che possono
  86. essere usate a volonta', basta ricordarsi cosa ci avete messo!!!!!
  87.  
  88.